#pragma once

// Copyright (c) 2010 Manuel Peinado Gallego <manuel.peinado@gmail.com>
// Distributed under the MIT license

// ScaleGizmo.h : interface of the ScaleGizmo class
//


#include "Gizmo.h"

class ScaleGizmo : public Gizmo
{
public:

    ScaleGizmo(GizmoManager* manager);

protected:

    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    // override
    void drawGizmoEnds(View3d * view, const Color colors[3], 
                       double size) const override;

    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    // Gizmo overrides

    void onNodeDrag(const ScreenPoint & dragPoint, gx::Mat4 & localTransform,
                    gx::Mat4 & gizmoTransform, 
                    NodeEvent::Property& prop) override;
    bool hasXYZGizmoPart() const override;

    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    // Draggable override

    void onEndDragImpl() override;

    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    gx::Vec3 findScaleManipScaleVec(double distRatio) const;
};

